package com.yunxin.admin.system.application;

import com.yunxin.admin.system.application.dto.MenuDTO;
import com.yunxin.admin.system.application.dto.MenuInfoDTO;
import com.yunxin.admin.system.application.dto.OptionDTO;
import com.yunxin.admin.system.application.dto.RouteDTO;

import java.util.List;
import java.util.Set;

/**
 * @author zero°
 * @since 2023-07-11
 */
public interface MenuQueryService {

    /**
     * 获取菜单表格列表
     *
     * @param keywords keywords
     * @return List<SysMenuDO>
     */
    List<MenuDTO> listMenus(String keywords);


    /**
     * 获取菜单下拉列表
     *
     * @return List<AdminOptionDTO < Long>>
     */
    List<OptionDTO<Long>> listMenuOptions();

    /**
     * 获取路由列表
     *
     * @return List<RouteResponse>
     */
    List<RouteDTO> listRoutes();

    /**
     * 获取角色权限集合
     *
     * @param roles roles
     * @return Set<String>
     */
    Set<String> listRolePerms(Set<String> roles);

    /**
     * 获取菜单表单数据
     *
     * @param id 菜单ID
     * @return SysMenu
     */
    MenuInfoDTO getMenuById(Long id);
}
